package cn.eleven.dao;

import cn.eleven.entity.Lease;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public interface LeaseDAO {

    /**
     * 根据房间ID查找当前有效租约
     * @param conn 数据库连接
     * @param roomId 房间ID
     * @return 当前有效租约（如果有的话）
     * @throws SQLException SQL异常
     */
    public Lease findActiveLeaseByRoomId(Connection conn, int roomId) throws SQLException;

    /**
     * 插入一条租约记录
     * @param conn 数据库连接
     * @param lease 租约对象
     * @return 插入的租约ID（主键）
     * @throws SQLException SQL异常
     */
    int insert(Connection conn, Lease lease) throws SQLException; // 返回生成的主键

    /**
     * 更新租约的结束时间
     * @param conn 数据库连接
     * @param lease 租约对象
     * @return 受影响的行数
     * @throws SQLException SQL异常
     */
    int update(Connection conn, Lease lease) throws SQLException;

    /**
     * 根据用户ID查询所有租约
     * @param conn 数据库连接
     * @param userId 用户ID
     * @return 租约列表
     * @throws SQLException SQL异常
     */
    public List<Lease> findByUserId(Connection conn, int userId) throws SQLException;

    /**
     * 根据房间ID和用户ID查找当前有效的租约
     * @param conn 数据库连接
     * @param roomId 房间ID
     * @param userId 用户ID
     * @return 当前有效租约（如果有的话）
     * @throws SQLException SQL异常
     */
    public Lease findActiveLeaseByRoomAndUser(Connection conn, int roomId, int userId) throws SQLException;
}
